﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using CondominioWeb.Persistencia.NHibernate;
using CondominioWeb.Dominio;
namespace CondominioWeb.Pruebas
{
    [TestFixture]
    public class TestReservaDAO
    {
        private ReservaDAO reservaDao=new ReservaDAO();
        [Test]
        public void TestCrear()
        {
            Area_Comun AreaComun = new Area_Comun();
            AreaComun.Codigo_Area_Comun=1;
            Situacion_Reserva SituacionReserva=new Situacion_Reserva();
            SituacionReserva.Codigo_Situacion_Reserva=1;

            Reserva ReservaNuevo=new Reserva();
            ReservaNuevo.Codigo=1;
            ReservaNuevo.Fecha=Convert.ToDateTime("22/07/2011");
            ReservaNuevo.oAreaComun=AreaComun;
            ReservaNuevo.CantidadPersonas=20;
            ReservaNuevo.Responsable="Pedro Rivera";
            ReservaNuevo.FechaSeparacion=Convert.ToDateTime("28/07/2011");
            ReservaNuevo.oSituacion=SituacionReserva;
            ReservaNuevo.Estado="Activo";

            // 2. Llamada al método del DAO a probar
            Reserva ReservaCreado=reservaDao.Crear(ReservaNuevo);
            // 4. Implementar las validaciones
            Assert.NotNull(ReservaCreado);
            Assert.AreEqual(ReservaNuevo.Codigo,ReservaCreado.Codigo);

        }
        [Test]
        public void TestObtener()
        {
            int _cod_Reserva;
            // 1. Instanciando el objeto TO
            // 2. Llamada al método del DAO a probar
            _cod_Reserva = 1;
            Reserva ReservaConsulta = reservaDao.Obtener(_cod_Reserva);

            // 4. Implementar las validaciones
            Assert.NotNull(ReservaConsulta);
            Assert.AreEqual(ReservaConsulta.Codigo, _cod_Reserva);
            Assert.IsNotNull(ReservaConsulta.Codigo);
        }

        [Test]
        public void TestEliminar()
        {
            // 1. Instanciando el objeto TO
            Reserva oReserva = new Reserva();
            oReserva.Codigo = 1;
            // 2. Llamada al método del DAO a probar
            Assert.Catch<Exception>(delegate
            {
                reservaDao.Eliminar(oReserva);
            });
            Assert.DoesNotThrow(delegate
            {
                reservaDao.Eliminar(oReserva);
            });

            // 3. Implementar las validaciones
            Assert.NotNull(oReserva);
            Assert.NotNull(oReserva.Codigo);

        }

    }
}